RAID
✒️ 2025-05-22 14:27 내용 수정
저장장치 여러 개를 묶어 고용량, 고성능인 저장 장치 한 개와 같은 효과를 얻기 위해 개발된 기법
-
디스크 성능 개선 및 데이터 보호에 사용된다.
-
참고 자료 : 위키백과 RAID
-
레이드 방식
- 하드웨어 RAID
- 하드를 연결하면 RAID 컨트롤러 내부에서 구현된다.
- 비용이 많이 든다.
- 소프트웨어 RAID (사람이 직접 설정)
- 하드웨어 방식에 비해 속도가 떨어지지만 비용이 저렴하다.
- 하드웨어 RAID
-
레벨
-
Linear, RAID 0, RAID 1, RAID 2, RAID 3, RAID 4, RAID 5, RAID 6, RAID 10(0+1), RAID 01(1+0)
| 레벨 | 최소 디스크 | 오류검출기능 | 고장 복구 기능 | 특징 |
|---|---|---|---|---|
| RAID LINEAR | 2개 | X | 2개 이상을 1개의 볼륨으로 사용, 순차적으로 데이터 저장 | |
| 1개 디스크가 고장나면 묶여있던 볼륨 사용 불가 | ||||
| RAID 0 | 2개 | X | X | 스트라이핑, 속도가 가장 빠르고 공간 효율성 좋음 |
| 데이터를 여러 조각(=디스크 수)으로 나눠 동시에 저장하기에 한 섹터에서 손상 발생 시 복구 불가 | ||||
| RAID 1 | 2개 | X | O(그대로 복사) | 미러링, 한 디스크에 데이터를 작성하면 다른 디스크는 미러링으로 사용 |
| 속도 향상은 기대하기 어려우나, 물리적 오류 발생 시 해당 하드만 교체하는 것으로 문제 해결 가능 | ||||
| 동일한 용량의 디스크가 2개 필요하므로 비싸고 공간 효율성 떨어짐 | ||||
| RAID 5 | 3개 | O(배분됨) | O | 스트라이핑, RAID 1의 안정성 + RAID 0의 공간 효율성 |
| Parity를 사용하여 데이터를 복구 | ||||
| 총 용량 = (하드디스크 수 - 1) | ||||
| RAID 6 | 4개 | O | RAID 5에서 Double Parity bit를 이용한 방식 | |
| 각 디스크에 2개의 Parity 데이터 기록, 디스크가 2개까지 고장 나도 데이터 손실 X | ||||
| 총 용량 = (하드디스크 수 - 2) | ||||
| RAID 10 | 4개 | RAID 1로 2개씩 미러링, 이를 다시 RAID 0으로 스트라이핑 | ||
| RAID 01보다 손상된 하드를 교체할 때 데이터 유지 및 교체 속도 측면에서 더 유리함 | ||||
| RAID 01 | 4개 | RAID 0로 2개씩 스트라이핑, 이를 다시 RAID 1으로 미러링 |
- RAID Linear와 RAID 0는 고장 시 데이터 복구 불가 및 하드 오류로 인한 시스템 재가동에 영향을 끼치므로, 고장난 하드디스크를 제외하고 새 하드디스크를 추가하여 RAID를 다시 만들어야 한다.
mdadm --stop md장치명,mdadm --create md장치명 --level=0 --raid-device=2 장치1 장치2mdadm --stop md장치명,mdadm --create md장치명 --level=linear --raid-device=2 장치1 장치2
- 고장 복구 기능이 있는 RAID 1과 RAID 5는 고장난 하드디스크를 제거하고 새 하드디스크를 RAID에 추가해준다.
mdadm md장치명 -f 고장난하드,mdadm md장치명 -r 고장난하드mdadm -a md장치명
RAID 설정
- 디스크 관련 명령어 참고
- 가상 머신에서 하드디스크 장착 (하드디스크 추가#1. 하드디스크 추가)
- 리눅스에서 추가된 하드디스크 개수 확인
- 파티션 생성 (하드디스크 추가#2. 파티션 생성):
#fdisk - 하드디스크의 디스크 타입을
# fdisk에서 Linux Raid으로 변경# fdisk /dev/sdb1t: 디스크 id 변환 : 83(Linux) -> fd(Linux RAID)w: 저장하고 종료하기 꼭 잊지 말기
- mdadm을 이용한 RAID 생성
- 파일시스템 생성(포맷) (하드디스크 추가#3. 파일 시스템 생성하기) : `# mkfs.ext4
- 마운트 (하드디스크 추가#4. 마운트하여 사용하기) :
# mkdir# mount - 마운트 확인 :
# df -h
- 현재 작업 중인 레이드의 상태 출력 :
cat /proc/mdstat
RAID 0 만들기
-
하드디스크를 추가 하고 파티션 지정
- 레이드의 하드디스크 타입 :
fd

- 레이드의 하드디스크 타입 :
-
RAID 0 만들기
# mdadm --create md장치명 --level=레이드레벨 --raid-devices=하드디스크갯수 장치명1 장치명2- RAID 0이므로
--level=0
- RAID 0이므로
-
RAID 0 확인 :
# mdadm --detail md장치명

-
RAID 0 파일시스템 생성 :
# mkfs.ext4 md장치명

-
마운트 포인트 생성 및 마운트 작업 :
# mkdir 타겟디렉터리,# mount md장치명 타겟디렉터리

-
RAID 0 해제할 경우 :
# mdadm --stop md장치명- 명령어 입력 후 생성된 RAID 0 에서 하드를 여러 개 묶은 걸 다시 푼다.
- 이 때 바로 다음 작업을 해버리면 하드 일부만 해제되고 나머진 해제가 안되는 현상이 생길 수 있으므로 시간 차를 두고 해제 및 확인을 해야 한다.

- stop이 완료되기 전에 다른 작업 수행 시 아직 RAID에서 해제되지 않은 장치가 존재해서 mdadm create가 중단된다.
- 이 때 다시
# mdadm --stop md장치명을 해주고, 조금 기다린 뒤에 다시# mdadm --detail md장치명로 해제가 완료되었는지 확인해준다.

- 일반 하드디스크로 초기화 :
# fdisk 장치이름- 기존의 하드디스크가 고장난 것으로 가정 후 작업진행
- 파티션 초기화 및 타입 재지정
- 다시 RAID 0 를 만든다면 1번 과정으로 돌아가서 반복
RAID 1 만들기
- 전체적 과정은 RAID#RAID 0 만들기와 동일하다.
# mdadm --create md장치명 --level=레이드레벨 --raid-devices=하드디스크갯수 장치명1 장치명2에서level=1로 설정한다.- 추가로 오류가 발생한 디스크 처리 과정이 존재한다.
- 고장 난 하드 지정 전
umount
- 먼저 이 RAID 1을
# umount md장치이름해줘야 한다.- mount된 상태에서 작업을 진행하려 하면 아래와 같은 문구가 뜨면서 진행이 멈춘다.

- mount된 상태에서 작업을 진행하려 하면 아래와 같은 문구가 뜨면서 진행이 멈춘다.
-
고장 난 하드 지정 :
# mdadm md장치명 -f 장치명- 고장 난 하드는
# mdadm --detail md장치명로 확인 시 faulty 표시로 뜨고, 이 상태로 뜬다. - 아래는 mount 되었던 하드의 파일 및 디렉터리 확인
- 고장 난 하드는
-
고장 난 하드 제거 :
# mdadm md장치명 -r 장치명

-
새 하드디스크를 md에 추가 :
# mdadm md장치명 -a 장치명- 새 장치가 기존 RAID 1에 있던 하드 디스크와 미러링된다.

- 새 장치가 기존 RAID 1에 있던 하드 디스크와 미러링된다.
RAID Linear 만들기
- 참고 자료 : 안산드레아스's CentOS7 리눅스 Linear Raid 하드디스크 만들기
- 전체적 과정은 RAID#RAID 0 만들기와 동일하다.
# mdadm --create md장치명 --level=레이드레벨 --raid-devices=하드디스크갯수 장치명1 장치명2에서 level=linear로 설정한다.
RAID 10 만들기
- 전체적 과정은 RAID#RAID 0 만들기와 동일하다.
- RAID 1로 2개씩 미러링, RAID 1로 미러링 한 것을 다시 RAID 0으로 스트라이핑해준다.
- 안정성이 높지만 RAID 01에 비해 성능은 조금 떨어진다.
- 하나의 드라이브가 고장나도 다른 장치에 데이터가 미러링되므로 복구할 수 있다.
RAID 01 만들기
- 전체적 과정은 RAID#RAID 0 만들기와 동일하다.
- RAID 0로 2개씩 스트라이핑, RAID 0로 스트라이핑 한 것을 다시 RAID 1으로 미러링 해준다.
- 성능은 RAID 10에 비해 좋으나 안정성은 낮다.
- 하나의 드라이브가 고장나면 해당 드라이브의 스트라이핑 데이터는 손실 된다.
RAID 5 만들기
- 참고 자료 : 제리스트's CentOS RAID의 개념과 종류
- 특징
- 최소 하드가 3개 필요하지만 4개로 구축하는 것이 좋다.
- 하드 중 하나는 패리티 상태를 저장하기 때문에 용량 계산 시 (하드디스크-1)가 RAID 5 용량이 된다.
- 위의 최소 개수로만 구축한다면 실제 데이터를 저장하고 돌아가는 하드디스크는 2개 뿐이다.
- 패리티 : 해당 하드디스크가 장애가 발생했는지 여부를 판단
- 각각의 하드디스크를 RAID 5의 하드디스크 개수만큼 분할되고, 각 하드 디스크에 한 공간을 패리티 용으로 사용한다.
- 1부터 n까지 밑에서 첫번째, 두번째, ... , 맨 위 공간이 패리티를 저장하고, 같은 위치 라인에서의 패리티를 담당한다.(같은 하드 디스크의 패리티X)
- 홀수 패리티 : 합계가 홀수, 합계가 짝수가 된다면 하드에 문제 발생
- 짝수 패리티 : 합계가 짝수, 합계가 홀수가 된다면 하드에 문제 발생
- 각각의 하드디스크를 RAID 5의 하드디스크 개수만큼 분할되고, 각 하드 디스크에 한 공간을 패리티 용으로 사용한다.
- 각 하드에서 패리티의 상태는 1(true), 0(false)으로 지정되어 있고, 하드 중 하나가 에러가 나면 패리티 상태를 저장하던 하드가 에러난 하드의 정보를 대체해서 저장한다.
- 제작
- 전체적 과정은 RAID#RAID 0 만들기와 동일하다.
# mdadm --create md장치명 --level=레이드레벨 --raid-devices=하드디스크갯수 장치명1 장치명2 ...에서 level=5로 설정한다.

RAID 6 만들기
- 전체적 과정은 RAID#RAID 0 만들기와 동일하다.
# mdadm --create md장치명 --level=레이드레벨 --raid-devices=하드디스크갯수 장치명1 장치명2에서 level=6로 설정한다.